#!/usr/bin/env python
"""
1，查找并连接WiFi；
2，通过“requests”模块来完成WiFi的自动登录；
    2.1：先使用自己的账号密码完成静态自动登录；
    2.2：使用全校学生的账号完成随机登录；
    2.3：连接后，把能连接成功的账号密码分别保存，方便后期使用；
    2.4：第二次连接时首先验证 之前成功的；
3，返回结果，不成功继续。
"""
# 第一步后期解决

import re
import time
import requests
import pywifi
import os

url_0 = r"http://172.30.4.129/a70.htm"
url_post = r"http://172.30.4.129/a70.htm?isReback=1"
url_host = r"http://172.30.4.129/"

post_information = {
    '0MKKey': '123456',
    'buttonClicked': '',
    'cmd': '',
    'DDDDD': '201613010215@cmcc',
    'err_flag': '',
    'Login': '',
    'para': '00',
    'password': '',
    'R1': '0',
    'R2': '',
    'R3': '0',
    'R6': '0',
    'redirect_url': '',
    'upass': '063918',
    'user': '',
    'username': ''}


def wifi_find():
    wifi = pywifi.PyWiFi()
    card = wifi.interfaces()[0]
    card.scan()
    wifi_list = card.scan_results()
    for x in wifi_list:
        print(x.ssid)
        if x.ssid == "Huas-Student":
            return 1
    return 0


def wifi_interlinkage():
    wifi = pywifi.PyWiFi()  # 创建一个对象
    card = wifi.interfaces()[0]  # 选取一个网卡
    print(card.name())  # 输出网卡名称
    card.disconnect()  # 断开现有连接
    time.sleep(1)

    profile = pywifi.Profile()
    profile.ssid = "Huas-Student"
    card.connect(card.add_network_profile(profile))

    return 0


def initialize():
    url = requests.get(url_host)
    url.encoding = "gbk"
    url = url.text
    BOOL = re.search("注销页", url, )
    if BOOL is not None:
        return 1
    else:
        return 0


def landing():
    n = 0
    requests.get(url_0)
    while not initialize():
        n += 1
        requests.post(url_post, data=post_information)
        if n > 1:
            print(f"登录失败，正在{n-1}重新登录")
            time.sleep(1)
    print("登录成功")
    return 0


if __name__ == "__main__":
    if os.system("ping -n 1 -i 2 baidu.com"):
        if wifi_find():
            wifi_interlinkage()
            time.sleep(3)
            if initialize():
                print("已经登录，不能重复登录")
            else:
                print("正在为你登录...")
                landing()
        else:
            print('"Huas-Student"连接失败，请检查是否在无线网覆盖范围内。')
    else: print("设备已联网，无需再次连接")
    print("5秒后窗口关闭...")
    time.sleep(5)
